#pragma once
#include "HeapLink.h"
#include <vector>
using namespace std;
class Heap
{
protected:
	vector< HeapLink* >		_arr;
	int						_heapSize;

public:
	Heap(){ 
		_arr = vector<HeapLink*>();
		_heapSize = 0;
	}
	bool isEmpty();
	int getSize();
	int right(int i);
	int left(int i);
	int parent(int i);
	int getFirst();
	//HeapLink* extract(int index);
	int extract(int index);

	virtual void posIT(HeapLink * tmp, int i) = 0;
	virtual void heapify(int i) = 0;
	virtual void insert(int num) = 0;
	virtual int pop() = 0;

};
